#pragma once
#include <string>
#include <vector>
#include <map>
#include "DataPointManager.h"
// Yes, I could use double arrays, but this just makes less headache
// there is a *marginal* run time cost, but it is worth the ease of use
// and not having to deal with bounds check and memory allocation 
/********************************************************************/
typedef std::vector<double> TFeatureVector;
typedef std::vector<double>::iterator TFeatureVectorIter;
typedef std::vector<double>::reverse_iterator TFetureVectorRIter;
/********************************************************************/
typedef std::vector<std::string> TFeatureVectorLabel;
typedef std::vector<std::string>::iterator TFeatureVectorLabelIter;
typedef std::vector<std::string>::reverse_iterator TFetureVectorLabelRIter;
/********************************************************************/
typedef std::vector<TFeatureVector> TDataSet;
typedef std::vector<TFeatureVector>::iterator TDataSetIter;
typedef std::vector<TFeatureVector>::reverse_iterator TDataSetRIter;
/********************************************************************/
typedef std::map<double,TDataSet> TTrainingDataSet;
typedef std::map<double,TDataSet>::iterator TTrainingDataSetIter;
/********************************************************************/
typedef std::vector<double> TTruthLabels;
typedef std::vector<double>::iterator TTruthLabelsIter;
typedef std::vector<double>::reverse_iterator TTruthLabelsRIter;
/********************************************************************/
typedef std::map<double,std::string> TClassToNameMap;
typedef std::map<double,std::string>::iterator TClassToNameIter;
/********************************************************************/
typedef std::vector<CDataPointManager*> TDataMgrVector;
typedef std::vector<CDataPointManager*>::iterator TDataMgrVectorIter;
typedef std::vector<CDataPointManager*>::reverse_iterator TDataMgrVectorRIter;
/********************************************************************/